package com.samp.solr.hanlp.ner;

import com.hankcs.hanlp.HanLP;
import com.hankcs.hanlp.model.perceptron.PerceptronLexicalAnalyzer;

/**
 * * 基于感知机序列标注的词法分析器，可选多个模型。
 *  * - large训练自一亿字的大型综合语料库，是已知范围内全世界最大的中文分词语料库。
 *  * - pku199801训练自个人修订版1998人民日报语料1月份，仅有183万字。
 *  * 语料库规模决定实际效果，面向生产环境的语料库应当在千万字量级。欢迎用户在自己的语料上训练新模型以适应新领域、
 *      识别新的命名实体。
 *  * 无论在何种语料上训练，都完全支持简繁全半角和大小写。
 */
public class PerceptronNerDemo {
    private static void pku98() throws Exception{
        PerceptronLexicalAnalyzer analyzer = new PerceptronLexicalAnalyzer("data/model/perceptron/pku199801/cws.bin",
                            HanLP.Config.PerceptronPOSModelPath,HanLP.Config.PerceptronNERModelPath);
        System.out.println(analyzer.analyze("上海华安工业（集团）公司董事长谭旭光和秘书胡花蕊来到美国纽约现代艺术博物馆参观"));
        System.out.println(analyzer.analyze("总统普京与特朗普通电话讨论太空探索技术公司"));
        analyzer.learn("与/c 特朗普/nr 通/v 电话/n 讨论/v [太空/s 探索/vn 技术/n 公司/n]/nt");
        System.out.println(analyzer.analyze("总统普京与特朗普通电话讨论太空探索技术公司"));

        System.out.println(analyzer.analyze("我在浙江金华出生，我的名字叫金华"));
        analyzer.learn("在/p 浙江/ns 金华/ns 出生/v");
        System.out.println(analyzer.analyze("我在四川金华出生，我的名字叫金华"));
    }

    public static void main(String[] args) {
        try{
            pku98();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
